当前位置: GO > Golang 之context用法

Golang 之context用法

2022-08-01 分类:GO 作者:admin 阅读(26)

在这里插入图片描述

为此Go1.7以来提供了 context 来解决类似的问题 , context 可以跟踪 Goroutine 的调用, 在调用内部维护一个调用树,通过这个调用树可以在传递超时或者退出通知,还能在调用树中传递元数据

context的中文翻译是上下文 ,我们可以理解为 context 管理了一组呈现树状结构的 Goroutine ,让每个Goroutine 都拥有相同的上下文,并且可以在这个上下文中传递数据

context 实际上只是定义的4个方法的接口,凡是实现了该接口的都称为一种 context

context.go 包中提供了4个以 With 开头的函数, 这几个函数的主要功能是实例化不同类型的context

通过 Background() 和 TODO() 创建最 emptyCtx 实例 ,通常是作为根节点

通过 WithCancel() 创建 cancelCtx 实例

通过 WithValue() 创建 valueCtx 实例

通过 WithDeadline 和 WithTimeout 创建 timerCtx 实例

3.1 WithCancel使用示例

3.2 WithDeadline

设置了deadlinecontext

这个deadline(最终期限) 表示context在指定的时刻结束

运行结果为:over context deadline exceeded

3.3 WithTimeout

实际就是调用了WithDeadline()

3.4 WithValue

仅是在Context 基础上添加了 key : value 的键值对

context 形成的树状结构,后面的节点可以访问前面节点传导的数据

 

来源:https://blog.csdn.net/weixin_37717557/article/details/106949500

只抄了应用,来源里面还有原理

注意go的context与hyperf的有很大区别,hyperf少很多东西,几乎只能当做一个协程内数组?这也是刚开始不理解go context原因,先入为主了

https://hyperf.wiki/2.2/#/zh-cn/coroutine

「三年博客,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏

支付宝
微信
0

支付宝
微信
标签:

上一篇:

下一篇:

你可能感兴趣

共有 0 - Golang 之context用法

博客简介

精彩评论

  • admin(6年前 (2020-03-09))

    分别用不同厚度的筏板定义,画图后这设置筏板变截面处理。 http://f.fwxgx.co...

    评:新文章!
  • admin(6年前 (2020-03-09))

    分别用不同厚度的筏板定义,画图后这设置筏板变截面处理。 http://f.fwxgx.co...

    评:新文章!
  • admin(6年前 (2020-03-09))

    新增一个框架图! http://biji.jinli.vip/wp-content/upl...

    评:新文章!
  • 一位WordPress评论者(6年前 (2020-02-13))

    嗨,这是一条评论。 要开始审核、编辑及删除评论,请访问仪表盘的“评论”页面。 评论者头像来自...

    评:世界,您好!